/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.unifor.sd.bolsa.interfaces;

import br.unifor.sd.bolsa.util.Acao;
import java.io.IOException;
import java.util.List;

/**
 *
 * @author Pedro
 */
public interface ClienteInterface {

    /**
     * Conecta a um servidor remoto.
     * @param ip Ip do servidor
     * @param porta Porta do servidor
     */
    void conectar(String ip, Integer porta) throws Exception;

    /**
     * Dá um close na conexão.
     */
    void encerrarConexao() throws Exception;

    /**
     * Escuta conexao.
     */
    void escutar();

    /**
     * Adiciona um listener.
     * @param listener Listener
     */
    void addListener(ListListener listener);

    /**
     * Inicia as transmissoes.
     */
    void iniciar() throws Exception;

    /**
     * Compra uma acao mantendo seu valor.
     * @param acaoId Integer
     * @throws IOException
     */
    void comprarAcao(Integer acaoId) throws Exception;

    /**
     * Compra uma acao alterando o seu valor.
     * @param acaoId Integer
     * @param valor Double
     * @throws IOException
     */
    void comprarAcaoValor(Integer acaoId, Double valor) throws Exception;

    /**
     * Vende uma acao mantendo seu valor
     * @param acaoId Integer.
     * @throws IOException
     */
    void venderAcao(Integer acaoId) throws Exception;

    /**
     * Altera o dono da acao
     * @param dono String
     */
    void setDono(String dono);

    void message(List<Acao> lista);
}
